home *** CD-ROM | disk | FTP | other *** search
/ OpenGL Superbible (2nd Edition) / OpenGL SuperBible e2.iso / tools / Mesa-3.0 / SRC / POINTERS.C < prev    next >
Encoding:
C/C++ Source or Header  |  1998-06-08  |  19.3 KB  |  539 lines

  1. /* $Id: pointers.c,v 3.3 1998/06/07 22:18:52 brianp Exp $ */
  2.  
  3. /*
  4.  * Mesa 3-D graphics library
  5.  * Version:  3.0
  6.  * Copyright (C) 1995-1998  Brian Paul
  7.  *
  8.  * This library is free software; you can redistribute it and/or
  9.  * modify it under the terms of the GNU Library General Public
  10.  * License as published by the Free Software Foundation; either
  11.  * version 2 of the License, or (at your option) any later version.
  12.  *
  13.  * This library is distributed in the hope that it will be useful,
  14.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  16.  * Library General Public License for more details.
  17.  *
  18.  * You should have received a copy of the GNU Library General Public
  19.  * License along with this library; if not, write to the Free
  20.  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  21.  */
  22.  
  23.  
  24. /*
  25.  * $Log: pointers.c,v $
  26.  * Revision 3.3  1998/06/07 22:18:52  brianp
  27.  * implemented GL_EXT_multitexture extension
  28.  *
  29.  * Revision 3.2  1998/02/20 04:50:44  brianp
  30.  * implemented GL_SGIS_multitexture
  31.  *
  32.  * Revision 3.1  1998/02/01 20:05:10  brianp
  33.  * added glDrawRangeElements()
  34.  *
  35.  * Revision 3.0  1998/01/31 21:00:28  brianp
  36.  * initial rev
  37.  *
  38.  */
  39.  
  40.  
  41. #ifdef PC_HEADER
  42. #include "all.h"
  43. #else
  44. #include <stdio.h>
  45. #include <stdlib.h>
  46. #include <string.h>
  47. #include "accum.h"
  48. #include "alpha.h"
  49. #include "attrib.h"
  50. #include "bitmap.h"
  51. #include "blend.h"
  52. #include "clip.h"
  53. #include "context.h"
  54. #include "colortab.h"
  55. #include "copypix.h"
  56. #include "depth.h"
  57. #include "drawpix.h"
  58. #include "enable.h"
  59. #include "eval.h"
  60. #include "feedback.h"
  61. #include "fog.h"
  62. #include "get.h"
  63. #include "light.h"
  64. #include "lines.h"
  65. #include "dlist.h"
  66. #include "logic.h"
  67. #include "macros.h"
  68. #include "masking.h"
  69. #include "matrix.h"
  70. #include "misc.h"
  71. #include "pixel.h"
  72. #include "points.h"
  73. #include "polygon.h"
  74. #include "rastpos.h"
  75. #include "readpix.h"
  76. #include "rect.h"
  77. #include "scissor.h"
  78. #include "stencil.h"
  79. #include "teximage.h"
  80. #include "texobj.h"
  81. #include "texstate.h"
  82. #include "types.h"
  83. #include "varray.h"
  84. #include "vbfill.h"
  85. #include "winpos.h"
  86. #endif
  87.  
  88.  
  89.  
  90. /*
  91.  * For debugging
  92.  */
  93. static void check_pointers( struct gl_api_table *table )
  94. {
  95.    void **entry;
  96.    int numentries = sizeof( struct gl_api_table ) / sizeof(void*);
  97.    int i;
  98.  
  99.    entry = (void **) table;
  100.  
  101.    for (i=0;i<numentries;i++) {
  102.       if (!entry[i]) {
  103.          printf("found uninitialized function pointer at %d\n", i );
  104.          gl_problem(NULL, "Missing pointer in pointers.c");
  105.          /*abort()*/
  106.       }
  107.    }
  108. }
  109.  
  110.  
  111. /*
  112.  * Assign all the pointers in 'table' to point to Mesa's immediate-mode
  113.  * execution functions.
  114.  */
  115. static void init_execution_pointers( struct gl_api_table *table )
  116. {
  117.    table->Accum = gl_Accum;
  118.    table->AlphaFunc = gl_AlphaFunc;
  119.    table->AreTexturesResident = gl_AreTexturesResident;
  120.    table->ArrayElement = gl_ArrayElement;
  121.    table->Begin = gl_Begin;
  122.    table->BindTexture = gl_BindTexture;
  123.    table->Bitmap = gl_Bitmap;
  124.    table->BlendColor = gl_BlendColor;
  125.    table->BlendEquation = gl_BlendEquation;
  126.    table->BlendFunc = gl_BlendFunc;
  127.    table->CallList = gl_CallList;
  128.    table->CallLists = gl_CallLists;
  129.    table->Clear = gl_Clear;
  130.    table->ClearAccum = gl_ClearAccum;
  131.    table->ClearColor = gl_ClearColor;
  132.    table->ClearDepth = gl_ClearDepth;
  133.    table->ClearIndex = gl_ClearIndex;
  134.    table->ClearStencil = gl_ClearStencil;
  135.    table->ClipPlane = gl_ClipPlane;
  136.    table->Color3f = gl_Color3f;
  137.    table->Color3fv = gl_Color3fv;
  138.    table->Color4f = gl_Color4f;
  139.    table->Color4fv = gl_Color4fv;
  140.    table->Color4ub = gl_Color4ub;
  141.    table->Color4ubv = gl_Color4ubv;
  142.    table->ColorMask = gl_ColorMask;
  143.    table->ColorMaterial = gl_ColorMaterial;
  144.    table->ColorPointer = gl_ColorPointer;
  145.    table->ColorTable = gl_ColorTable;
  146.    table->ColorSubTable = gl_ColorSubTable;
  147.    table->CopyPixels = gl_CopyPixels;
  148.    table->CopyTexImage1D = gl_CopyTexImage1D;
  149.    table->CopyTexImage2D = gl_CopyTexImage2D;
  150.    table->CopyTexSubImage1D = gl_CopyTexSubImage1D;
  151.    table->CopyTexSubImage2D = gl_CopyTexSubImage2D;
  152.    table->CopyTexSubImage3DEXT = gl_CopyTexSubImage3DEXT;
  153.    table->CullFace = gl_CullFace;
  154.    table->DeleteLists = gl_DeleteLists;
  155.    table->DeleteTextures = gl_DeleteTextures;
  156.    table->DepthFunc = gl_DepthFunc;
  157.    table->DepthMask = gl_DepthMask;
  158.    table->DepthRange = gl_DepthRange;
  159.    table->Disable = gl_Disable;
  160.    table->DisableClientState = gl_DisableClientState;
  161.    table->DrawArrays = gl_DrawArrays;
  162.    table->DrawBuffer = gl_DrawBuffer;
  163.    table->DrawElements = gl_DrawElements;
  164.    table->DrawPixels = gl_DrawPixels;
  165.    table->DrawRangeElements = gl_DrawRangeElements;
  166.    table->EdgeFlag = gl_EdgeFlag;
  167.    table->EdgeFlagPointer = gl_EdgeFlagPointer;
  168.    table->Enable = gl_Enable;
  169.    table->EnableClientState = gl_EnableClientState;
  170.    table->End = gl_End;
  171.    table->EndList = gl_EndList;
  172.    table->EvalCoord1f = gl_EvalCoord1f;
  173.    table->EvalCoord2f = gl_EvalCoord2f;
  174.    table->EvalMesh1 = gl_EvalMesh1;
  175.    table->EvalMesh2 = gl_EvalMesh2;
  176.    table->EvalPoint1 = gl_EvalPoint1;
  177.    table->EvalPoint2 = gl_EvalPoint2;
  178.    table->FeedbackBuffer = gl_FeedbackBuffer;
  179.    table->Finish = gl_Finish;
  180.    table->Flush = gl_Flush;
  181.    table->Fogfv = gl_Fogfv;
  182.    table->FrontFace = gl_FrontFace;
  183.    table->Frustum = gl_Frustum;
  184.    table->GenLists = gl_GenLists;
  185.    table->GenTextures = gl_GenTextures;
  186.    table->GetBooleanv = gl_GetBooleanv;
  187.    table->GetClipPlane = gl_GetClipPlane;
  188.    table->GetColorTable = gl_GetColorTable;
  189.    table->GetColorTableParameteriv = gl_GetColorTableParameteriv;
  190.    table->GetDoublev = gl_GetDoublev;
  191.    table->GetError = gl_GetError;
  192.    table->GetFloatv = gl_GetFloatv;
  193.    table->GetIntegerv = gl_GetIntegerv;
  194.    table->GetPointerv = gl_GetPointerv;
  195.    table->GetLightfv = gl_GetLightfv;
  196.    table->GetLightiv = gl_GetLightiv;
  197.    table->GetMapdv = gl_GetMapdv;
  198.    table->GetMapfv = gl_GetMapfv;
  199.    table->GetMapiv = gl_GetMapiv;
  200.    table->GetMaterialfv = gl_GetMaterialfv;
  201.    table->GetMaterialiv = gl_GetMaterialiv;
  202.    table->GetPixelMapfv = gl_GetPixelMapfv;
  203.    table->GetPixelMapuiv = gl_GetPixelMapuiv;
  204.    table->GetPixelMapusv = gl_GetPixelMapusv;
  205.    table->GetPolygonStipple = gl_GetPolygonStipple;
  206.    table->GetString = gl_GetString;
  207.    table->GetTexEnvfv = gl_GetTexEnvfv;
  208.    table->GetTexEnviv = gl_GetTexEnviv;
  209.    table->GetTexGendv = gl_GetTexGendv;
  210.    table->GetTexGenfv = gl_GetTexGenfv;
  211.    table->GetTexGeniv = gl_GetTexGeniv;
  212.    table->GetTexImage = gl_GetTexImage;
  213.    table->GetTexLevelParameterfv = gl_GetTexLevelParameterfv;
  214.    table->GetTexLevelParameteriv = gl_GetTexLevelParameteriv;
  215.    table->GetTexParameterfv = gl_GetTexParameterfv;
  216.    table->GetTexParameteriv = gl_GetTexParameteriv;
  217.    table->Hint = gl_Hint;
  218.    table->Indexf = gl_Indexf;
  219.    table->Indexi = gl_Indexi;
  220.    table->IndexMask = gl_IndexMask;
  221.    table->IndexPointer = gl_IndexPointer;
  222.    table->InitNames = gl_InitNames;
  223.    table->InterleavedArrays = gl_InterleavedArrays;
  224.    table->IsEnabled = gl_IsEnabled;
  225.    table->IsList = gl_IsList;
  226.    table->IsTexture = gl_IsTexture;
  227.    table->LightModelfv = gl_LightModelfv;
  228.    table->Lightfv = gl_Lightfv;
  229.    table->LineStipple = gl_LineStipple;
  230.    table->LineWidth = gl_LineWidth;
  231.    table->ListBase = gl_ListBase;
  232.    table->LoadIdentity = gl_LoadIdentity;
  233.    table->LoadMatrixf = gl_LoadMatrixf;
  234.    table->LoadName = gl_LoadName;
  235.    table->LogicOp = gl_LogicOp;
  236.    table->Map1f = gl_Map1f;
  237.    table->Map2f = gl_Map2f;
  238.    table->MapGrid1f = gl_MapGrid1f;
  239.    table->MapGrid2f = gl_MapGrid2f;
  240.    table->Materialfv = gl_Materialfv;
  241.    table->MatrixMode = gl_MatrixMode;
  242.    table->MultMatrixf = gl_MultMatrixf;
  243.    table->NewList = gl_NewList;
  244.    table->Normal3f = gl_Normal3f;
  245.    table->NormalPointer = gl_NormalPointer;
  246.    table->Normal3fv = gl_Normal3fv;
  247.    table->Ortho = gl_Ortho;
  248.    table->PassThrough = gl_PassThrough;
  249.    table->PixelMapfv = gl_PixelMapfv;
  250.    table->PixelStorei = gl_PixelStorei;
  251.    table->PixelTransferf = gl_PixelTransferf;
  252.    table->PixelZoom = gl_PixelZoom;
  253.    table->PointSize = gl_PointSize;
  254.    table->PolygonMode = gl_PolygonMode;
  255.    table->PolygonOffset = gl_PolygonOffset;
  256.    table->PolygonStipple = gl_PolygonStipple;
  257.    table->PopAttrib = gl_PopAttrib;
  258.    table->PopClientAttrib = gl_PopClientAttrib;
  259.    table->PopMatrix = gl_PopMatrix;
  260.    table->PopName = gl_PopName;
  261.    table->PrioritizeTextures = gl_PrioritizeTextures;
  262.    table->PushAttrib = gl_PushAttrib;
  263.    table->PushClientAttrib = gl_PushClientAttrib;
  264.    table->PushMatrix = gl_PushMatrix;
  265.    table->PushName = gl_PushName;
  266.    table->RasterPos4f = gl_RasterPos4f;
  267.    table->ReadBuffer = gl_ReadBuffer;
  268.    table->ReadPixels = gl_ReadPixels;
  269.    table->Rectf = gl_Rectf;
  270.    table->RenderMode = gl_RenderMode;
  271.    table->Rotatef = gl_Rotatef;
  272.    table->Scalef = gl_Scalef;
  273.    table->Scissor = gl_Scissor;
  274.    table->SelectBuffer = gl_SelectBuffer;
  275.    table->ShadeModel = gl_ShadeModel;
  276.    table->StencilFunc = gl_StencilFunc;
  277.    table->StencilMask = gl_StencilMask;
  278.    table->StencilOp = gl_StencilOp;
  279.    table->TexCoord2f = gl_TexCoord2f;
  280.    table->TexCoord4f = gl_TexCoord4f;
  281.    table->TexCoordPointer = gl_TexCoordPointer;
  282.    table->TexEnvfv = gl_TexEnvfv;
  283.    table->TexGenfv = gl_TexGenfv;
  284.    table->TexImage1D = gl_TexImage1D;
  285.    table->TexImage2D = gl_TexImage2D;
  286.    table->TexImage3DEXT = gl_TexImage3DEXT;
  287.    table->TexSubImage1D = gl_TexSubImage1D;
  288.    table->TexSubImage2D = gl_TexSubImage2D;
  289.    table->TexSubImage3DEXT = gl_TexSubImage3DEXT;
  290.    table->PointParameterfvEXT = gl_PointParameterfvEXT;
  291.    table->TexParameterfv = gl_TexParameterfv;
  292.    table->Translatef = gl_Translatef;
  293.    table->Vertex2f = gl_vertex2f_nop;
  294.    table->Vertex3f = gl_vertex3f_nop;
  295.    table->Vertex4f = gl_vertex4f_nop;
  296.    table->Vertex3fv = gl_vertex3fv_nop;
  297.    table->VertexPointer = gl_VertexPointer;
  298.    table->Viewport = gl_Viewport;
  299.  
  300.    /* GL_MESA_window_pos extension */
  301.    table->WindowPos4fMESA = gl_WindowPos4fMESA;
  302.  
  303.    /* GL_MESA_resize_buffers extension */
  304.    table->ResizeBuffersMESA = gl_ResizeBuffersMESA;
  305.  
  306.    /* GL_SGIS_multitexture / GL_EXT_multitexture */
  307.    table->MultiTexCoord4f = gl_MultiTexCoord4f;
  308.    table->MultiTexCoordPointer = gl_MultiTexCoordPointer;
  309.    table->InterleavedTextureCoordSets = gl_InterleavedTextureCoordSets;
  310.    table->SelectTextureSGIS = gl_SelectTextureSGIS;
  311.    table->SelectTexture = gl_SelectTexture;
  312.    table->SelectTextureCoordSet = gl_SelectTextureCoordSet;
  313.    table->SelectTextureTransform = gl_SelectTextureTransform;
  314. }
  315.  
  316.  
  317.  
  318. /*
  319.  * Assign all the pointers in 'table' to point to Mesa's display list
  320.  * building functions.
  321.  */
  322. static void init_dlist_pointers( struct gl_api_table *table )
  323. {
  324.    table->Accum = gl_save_Accum;
  325.    table->AlphaFunc = gl_save_AlphaFunc;
  326.    table->AreTexturesResident = gl_AreTexturesResident;
  327.    table->ArrayElement = gl_save_ArrayElement;
  328.    table->Begin = gl_save_Begin;
  329.    table->BindTexture = gl_save_BindTexture;
  330.    table->Bitmap = gl_save_Bitmap;
  331.    table->BlendColor = gl_save_BlendColor;
  332.    table->BlendEquation = gl_save_BlendEquation;
  333.    table->BlendFunc = gl_save_BlendFunc;
  334.    table->CallList = gl_save_CallList;
  335.    table->CallLists = gl_save_CallLists;
  336.    table->Clear = gl_save_Clear;
  337.    table->ClearAccum = gl_save_ClearAccum;
  338.    table->ClearColor = gl_save_ClearColor;
  339.    table->ClearDepth = gl_save_ClearDepth;
  340.    table->ClearIndex = gl_save_ClearIndex;
  341.    table->ClearStencil = gl_save_ClearStencil;
  342.    table->ClipPlane = gl_save_ClipPlane;
  343.    table->Color3f = gl_save_Color3f;
  344.    table->Color3fv = gl_save_Color3fv;
  345.    table->Color4f = gl_save_Color4f;
  346.    table->Color4fv = gl_save_Color4fv;
  347.    table->Color4ub = gl_save_Color4ub;
  348.    table->Color4ubv = gl_save_Color4ubv;
  349.    table->ColorMask = gl_save_ColorMask;
  350.    table->ColorMaterial = gl_save_ColorMaterial;
  351.    table->ColorPointer = gl_ColorPointer;
  352.    table->ColorTable = gl_save_ColorTable;
  353.    table->ColorSubTable = gl_save_ColorSubTable;
  354.    table->CopyPixels = gl_save_CopyPixels;
  355.    table->CopyTexImage1D = gl_save_CopyTexImage1D;
  356.    table->CopyTexImage2D = gl_save_CopyTexImage2D;
  357.    table->CopyTexSubImage1D = gl_save_CopyTexSubImage1D;
  358.    table->CopyTexSubImage2D = gl_save_CopyTexSubImage2D;
  359.    table->CopyTexSubImage3DEXT = gl_save_CopyTexSubImage3DEXT;
  360.    table->CullFace = gl_save_CullFace;
  361.    table->DeleteLists = gl_DeleteLists;   /* NOT SAVED */
  362.    table->DeleteTextures = gl_DeleteTextures;  /* NOT SAVED */
  363.    table->DepthFunc = gl_save_DepthFunc;
  364.    table->DepthMask = gl_save_DepthMask;
  365.    table->DepthRange = gl_save_DepthRange;
  366.    table->Disable = gl_save_Disable;
  367.    table->DisableClientState = gl_DisableClientState;  /* NOT SAVED */
  368.    table->DrawArrays = gl_save_DrawArrays;
  369.    table->DrawBuffer = gl_save_DrawBuffer;
  370.    table->DrawElements = gl_save_DrawElements;
  371.    table->DrawPixels = gl_save_DrawPixels;
  372.    table->DrawRangeElements = gl_save_DrawRangeElements;
  373.    table->EdgeFlag = gl_save_EdgeFlag;
  374.    table->EdgeFlagPointer = gl_EdgeFlagPointer;
  375.    table->Enable = gl_save_Enable;
  376.    table->EnableClientState = gl_EnableClientState;   /* NOT SAVED */
  377.    table->End = gl_save_End;
  378.    table->EndList = gl_EndList;   /* NOT SAVED */
  379.    table->EvalCoord1f = gl_save_EvalCoord1f;
  380.    table->EvalCoord2f = gl_save_EvalCoord2f;
  381.    table->EvalMesh1 = gl_save_EvalMesh1;
  382.    table->EvalMesh2 = gl_save_EvalMesh2;
  383.    table->EvalPoint1 = gl_save_EvalPoint1;
  384.    table->EvalPoint2 = gl_save_EvalPoint2;
  385.    table->FeedbackBuffer = gl_FeedbackBuffer;   /* NOT SAVED */
  386.    table->Finish = gl_Finish;   /* NOT SAVED */
  387.    table->Flush = gl_Flush;   /* NOT SAVED */
  388.    table->Fogfv = gl_save_Fogfv;
  389.    table->FrontFace = gl_save_FrontFace;
  390.    table->Frustum = gl_save_Frustum;
  391.    table->GenLists = gl_GenLists;   /* NOT SAVED */
  392.    table->GenTextures = gl_GenTextures;   /* NOT SAVED */
  393.  
  394.    /* NONE OF THESE COMMANDS ARE COMPILED INTO DISPLAY LISTS */
  395.    table->GetBooleanv = gl_GetBooleanv;
  396.    table->GetClipPlane = gl_GetClipPlane;
  397.    table->GetColorTable = gl_GetColorTable;
  398.    table->GetColorTableParameteriv = gl_GetColorTableParameteriv;
  399.    table->GetDoublev = gl_GetDoublev;
  400.    table->GetError = gl_GetError;
  401.    table->GetFloatv = gl_GetFloatv;
  402.    table->GetIntegerv = gl_GetIntegerv;
  403.    table->GetString = gl_GetString;
  404.    table->GetLightfv = gl_GetLightfv;
  405.    table->GetLightiv = gl_GetLightiv;
  406.    table->GetMapdv = gl_GetMapdv;
  407.    table->GetMapfv = gl_GetMapfv;
  408.    table->GetMapiv = gl_GetMapiv;
  409.    table->GetMaterialfv = gl_GetMaterialfv;
  410.    table->GetMaterialiv = gl_GetMaterialiv;
  411.    table->GetPixelMapfv = gl_GetPixelMapfv;
  412.    table->GetPixelMapuiv = gl_GetPixelMapuiv;
  413.    table->GetPixelMapusv = gl_GetPixelMapusv;
  414.    table->GetPointerv = gl_GetPointerv;
  415.    table->GetPolygonStipple = gl_GetPolygonStipple;
  416.    table->GetTexEnvfv = gl_GetTexEnvfv;
  417.    table->GetTexEnviv = gl_GetTexEnviv;
  418.    table->GetTexGendv = gl_GetTexGendv;
  419.    table->GetTexGenfv = gl_GetTexGenfv;
  420.    table->GetTexGeniv = gl_GetTexGeniv;
  421.    table->GetTexImage = gl_GetTexImage;
  422.    table->GetTexLevelParameterfv = gl_GetTexLevelParameterfv;
  423.    table->GetTexLevelParameteriv = gl_GetTexLevelParameteriv;
  424.    table->GetTexParameterfv = gl_GetTexParameterfv;
  425.    table->GetTexParameteriv = gl_GetTexParameteriv;
  426.  
  427.    table->Hint = gl_save_Hint;
  428.    table->IndexMask = gl_save_IndexMask;
  429.    table->Indexf = gl_save_Indexf;
  430.    table->Indexi = gl_save_Indexi;
  431.    table->IndexPointer = gl_IndexPointer;
  432.    table->InitNames = gl_save_InitNames;
  433.    table->InterleavedArrays = gl_save_InterleavedArrays;
  434.    table->IsEnabled = gl_IsEnabled;   /* NOT SAVED */
  435.    table->IsTexture = gl_IsTexture;   /* NOT SAVED */
  436.    table->IsList = gl_IsList;   /* NOT SAVED */
  437.    table->LightModelfv = gl_save_LightModelfv;
  438.    table->Lightfv = gl_save_Lightfv;
  439.    table->LineStipple = gl_save_LineStipple;
  440.    table->LineWidth = gl_save_LineWidth;
  441.    table->ListBase = gl_save_ListBase;
  442.    table->LoadIdentity = gl_save_LoadIdentity;
  443.    table->LoadMatrixf = gl_save_LoadMatrixf;
  444.    table->LoadName = gl_save_LoadName;
  445.    table->LogicOp = gl_save_LogicOp;
  446.    table->Map1f = gl_save_Map1f;
  447.    table->Map2f = gl_save_Map2f;
  448.    table->MapGrid1f = gl_save_MapGrid1f;
  449.    table->MapGrid2f = gl_save_MapGrid2f;
  450.    table->Materialfv = gl_save_Materialfv;
  451.    table->MatrixMode = gl_save_MatrixMode;
  452.    table->MultMatrixf = gl_save_MultMatrixf;
  453.    table->NewList = gl_save_NewList;
  454.    table->Normal3f = gl_save_Normal3f;
  455.    table->Normal3fv = gl_save_Normal3fv;
  456.    table->NormalPointer = gl_NormalPointer;  /* NOT SAVED */
  457.    table->Ortho = gl_save_Ortho;
  458.    table->PointParameterfvEXT = gl_save_PointParameterfvEXT;
  459.    table->PassThrough = gl_save_PassThrough;
  460.    table->PixelMapfv = gl_save_PixelMapfv;
  461.    table->PixelStorei = gl_PixelStorei;   /* NOT SAVED */
  462.    table->PixelTransferf = gl_save_PixelTransferf;
  463.    table->PixelZoom = gl_save_PixelZoom;
  464.    table->PointSize = gl_save_PointSize;
  465.    table->PolygonMode = gl_save_PolygonMode;
  466.    table->PolygonOffset = gl_save_PolygonOffset;
  467.    table->PolygonStipple = gl_save_PolygonStipple;
  468.    table->PopAttrib = gl_save_PopAttrib;
  469.    table->PopClientAttrib = gl_PopClientAttrib;  /* NOT SAVED */
  470.    table->PopMatrix = gl_save_PopMatrix;
  471.    table->PopName = gl_save_PopName;
  472.    table->PrioritizeTextures = gl_save_PrioritizeTextures;
  473.    table->PushAttrib = gl_save_PushAttrib;
  474.    table->PushClientAttrib = gl_PushClientAttrib;  /* NOT SAVED */
  475.    table->PushMatrix = gl_save_PushMatrix;
  476.    table->PushName = gl_save_PushName;
  477.    table->RasterPos4f = gl_save_RasterPos4f;
  478.    table->ReadBuffer = gl_save_ReadBuffer;
  479.    table->ReadPixels = gl_ReadPixels;   /* NOT SAVED */
  480.    table->Rectf = gl_save_Rectf;
  481.    table->RenderMode = gl_RenderMode;   /* NOT SAVED */
  482.    table->Rotatef = gl_save_Rotatef;
  483.    table->Scalef = gl_save_Scalef;
  484.    table->Scissor = gl_save_Scissor;
  485.    table->SelectBuffer = gl_SelectBuffer;   /* NOT SAVED */
  486.    table->ShadeModel = gl_save_ShadeModel;
  487.    table->StencilFunc = gl_save_StencilFunc;
  488.    table->StencilMask = gl_save_StencilMask;
  489.    table->StencilOp = gl_save_StencilOp;
  490.    table->TexCoord2f = gl_save_TexCoord2f;
  491.    table->TexCoord4f = gl_save_TexCoord4f;
  492.    table->TexCoordPointer = gl_TexCoordPointer;  /* NOT SAVED */
  493.    table->TexEnvfv = gl_save_TexEnvfv;
  494.    table->TexGenfv = gl_save_TexGenfv;
  495.    table->TexImage1D = gl_save_TexImage1D;
  496.    table->TexImage2D = gl_save_TexImage2D;
  497.    table->TexImage3DEXT = gl_save_TexImage3DEXT;
  498.    table->TexSubImage1D = gl_save_TexSubImage1D;
  499.    table->TexSubImage2D = gl_save_TexSubImage2D;
  500.    table->TexSubImage3DEXT = gl_save_TexSubImage3DEXT;
  501.    table->TexParameterfv = gl_save_TexParameterfv;
  502.    table->Translatef = gl_save_Translatef;
  503.    table->Vertex2f = gl_save_Vertex2f;
  504.    table->Vertex3f = gl_save_Vertex3f;
  505.    table->Vertex4f = gl_save_Vertex4f;
  506.    table->Vertex3fv = gl_save_Vertex3fv;
  507.    table->VertexPointer = gl_VertexPointer;  /* NOT SAVED */
  508.    table->Viewport = gl_save_Viewport;
  509.  
  510.    /* GL_MESA_window_pos extension */
  511.    table->WindowPos4fMESA = gl_save_WindowPos4fMESA;
  512.  
  513.    /* GL_MESA_resize_buffers extension */
  514.    table->ResizeBuffersMESA = gl_ResizeBuffersMESA;
  515.  
  516.    /* GL_SGIS_multitexture */
  517.    table->MultiTexCoord4f = gl_save_MultiTexCoord4f;
  518.    table->MultiTexCoordPointer = gl_MultiTexCoordPointer;   /* NOT SAVED */
  519.    table->InterleavedTextureCoordSets = gl_InterleavedTextureCoordSets;  /* NOT SAVED */
  520.    table->SelectTextureSGIS = gl_save_SelectTextureSGIS;
  521.    table->SelectTexture = gl_save_SelectTexture;
  522.    table->SelectTextureCoordSet = gl_save_SelectTextureCoordSet;
  523.    table->SelectTextureTransform = gl_save_SelectTextureTransform;
  524. }
  525.  
  526.  
  527.  
  528. void gl_init_api_function_pointers( GLcontext *ctx )
  529. {
  530.    init_execution_pointers( &ctx->Exec );
  531.  
  532.    init_dlist_pointers( &ctx->Save );
  533.  
  534.    /* make sure there's no NULL pointers */
  535.    check_pointers( &ctx->Exec );
  536.    check_pointers( &ctx->Save );
  537. }
  538.  
  539.